import Koa from 'koa'
// import cors from 'koa-cors' // 跨域
import koaBody from 'koa-body' // post body 解析
import logger from 'koa-logger' // 日志
import helmet from 'koa-helmet' // 安全相关
import koaRequest from 'koa-http-request' // 安全相关

import logUtils from './src/utils/logUtils'
import router from './src/route'
// import './src/mongodb'
// import monk from 'monk'
const app = new Koa()

app.use(logger())
app.use(helmet())
app.use(koaBody({
  multipart: true, // 文件上传开启
  jsoinLimit: '10mb',
  formLimit: '10mb',
  textLimit: '10mb'
}))
app.use(koaRequest())

// 日志监听保存
app.use(async (ctx, next) => {
  // 响应开始时间
  const start = new Date()
  // 响应间隔时间
  var ms
  try {
    // 开始进入到下一个中间件
    await next()
    ms = new Date() - start
    // 记录响应日志
    logUtils.logResponse(ctx, ms)
    // console.log('ccccc')
  } catch (error) {
    ms = new Date() - start
    // 记录异常日志
    logUtils.logError(ctx, error, ms)
    // console.log('aaaaaaaaaaa')
  }
})
// 路由
app
  .use(router.routes())
  .use(router.allowedMethods())

// app.listen(3000)
module.exports = app
